package com.coderfans.redis;

import java.util.Set;

/**
 * Created by ${fanchunshuai} on 2016-10-12.
 *
 * @version: V1.0
 * @Desc:   redis 有序set 数据操作接口
 * @Copyright (c) 2016 58到家-版权所有
 */
public interface IZSetRedis {

    /**
     * 向有序集合中添加一个值
     * @param field
     * @param key
     * @param score
     * @param value
     * @param <T>
     * @return
     */
    <T> long zadd(String field, String key, double score, T value);

    /**
     * 在有序集合中删除指定的元素值
     * @param field
     * @param key
     * @param value
     * @param <T>
     * @return
     */
    <T> long zrem(String field, String key, String... value);

    /**
     * 返回有序集合从 start  - stop的序列值
     * @param field
     * @param key
     * @param start
     * @param stop
     * @param clazz
     * @return
     */
    Set zrange(String field, String key, long start, long stop, Class clazz);

    /**
     * 返回 field+key集合的元素数量
     * @param field
     * @param key
     * @return
     */
    long zcard(String field, String key);

    /**
     * 返回集合中score在给定区间的数量。zcount zset 2 3
     * @param field
     * @param key
     * @param lowScore
     * @param highScore
     * @return
     */
    long zcount(String field, String key, double lowScore, double highScore);


}
